public class Day12 {
    // 合并链表
    public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
        ListNode head = new ListNode(0), cur = head;
        while(list1 != null && list2 != null) {
            if(list1.val < list2.val) {
                cur.next = list1;
                list1 = list1.next;
            } else {
                cur.next = list2;
                list2 = list2.next;
            }
            cur = cur.next;
        }
        if(list1 != null) {
            cur.next = list1;
        } else {
            cur.next = list2;
        }
        return head.next;
    }

    // 删除链表中重复的结点
    public ListNode deleteDuplication(ListNode pHead) {
        ListNode head = new ListNode(0), prev = head, cur = pHead;
        head.next = pHead;
        boolean flag = true; // true 表示没有重复
        while(cur != null) {
            if(prev.next.val != cur.val) {
                // 已经重复并且不是同一个位置
                if(!flag && prev.next != cur) {
                    // 删除
                    prev.next = cur;
                    flag = true;
                } else if(prev.next != cur){
                    // 值不同并且位置不一样的时候
                    prev = prev.next;
                }
            } else {
                if(prev.next != cur) {
                    flag = false;
                }
            }
            cur = cur.next;
        }
        if(!flag) {
            prev.next = cur;
        }
        return head.next;
    }
}
